﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using BLL;
using Exceptions;

namespace WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "WCFLocal" in code, svc and config file together.
    public class WCFLocal : IWCFLocal
    {
        public List<DTO.Local> list()
        {
            BLLLocal bllLocal = new BLLLocal();
            List<BTO.Local> btoLocais = bllLocal.list();
            List<DTO.Local> dtoLocais = new List<DTO.Local>();
            DTO.Local dtoLocal;

            foreach (BTO.Local btoLocal in btoLocais)
            {
                dtoLocal = new DTO.Local();
                dtoLocal.IDLocal = btoLocal.IDLocal;
                dtoLocal.pais = btoLocal.pais;
                dtoLocal.nome = btoLocal.nome;

                dtoLocais.Add(dtoLocal);
            }

            return dtoLocais;
        }

        public DTO.Local getByID(int id)
        {
            BLLLocal bllLocal = new BLLLocal();
            DTO.Local dtoLocal = new DTO.Local();

            try
            {
                BTO.Local btoLocal = bllLocal.getByID(id);

                dtoLocal.IDLocal = btoLocal.IDLocal;
                dtoLocal.pais = btoLocal.pais;
                dtoLocal.nome = btoLocal.nome;

            }
            catch (NotFoundLocalException e)
            {
                throw new NotFoundLocalException(e.Message);
            }
            catch (Exception)
            {
                throw new Exception("Local não encontrado!");
            }

            return dtoLocal;
        }

        public List<DTO.Local> getByPais(String pais)
        {
            BLLLocal bllLocal = new BLLLocal();
            List<BTO.Local> btoLocais = bllLocal.getByPais(pais);
            List<DTO.Local> dtoLocais = new List<DTO.Local>();
            DTO.Local dtoLocal;

            foreach (BTO.Local btoLocal in btoLocais)
            {
                dtoLocal = new DTO.Local();
                dtoLocal.IDLocal = btoLocal.IDLocal;
                dtoLocal.pais = btoLocal.pais;
                dtoLocal.nome = btoLocal.nome;

                dtoLocais.Add(dtoLocal);
            }

            return dtoLocais;
        }
    }
}
